//
//  NSString+WPSizeOfString.m
//  wobingwoyi
//
//  Created by WGP on 16/8/1.
//  Copyright © 2016年 WGP. All rights reserved.
//

#import "NSString+WPSizeOfString.h"

@implementation NSString (WPSizeOfString)

-(CGSize)sizeWithMaxSize:(CGSize)maxSize font:(CGFloat)font
{

    //设置用于计算度高的字体大小
    NSDictionary *att=@{NSFontAttributeName:[UIFont systemFontOfSize:font]};
    CGSize actSize=[self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:att context:nil].size;
    return actSize;
}

-(CGSize)sizeWithMaxSize:(CGSize)maxSize systemFont:(UIFont *)font
{
    
    //设置用于计算度高的字体大小
    NSDictionary *att=@{NSFontAttributeName:font};
    CGSize actSize=[self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:att context:nil].size;
    return actSize;
}

/**
 *  手机号码验证
 *
 *  @param mobileNumbel 传入的手机号码
 *
 *  @return 格式正确返回true  错误 返回fals
 */
+ (BOOL) isMobile:(NSString *)mobileNumbel{
    /**
     * 手机号码
     * 移动：134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通：130,131,132,152,155,156,185,186
     * 电信：133,1349,153,180,189,181(增加)
     */
    NSString * MOBIL = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
    /**
     10         * 中国移动：China Mobile
     11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     12         */
    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d{7}$";
    /**
     15         * 中国联通：China Unicom
     16         * 130,131,132,152,155,156,185,186
     17         */
    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
    /**
     20         * 中国电信：China Telecom
     21         * 133,1349,153,180,189,181(增加)
     22         */
    NSString * CT = @"^1((33|53|8[019])[0-9]|349)\\d{7}$";
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBIL];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestmobile evaluateWithObject:mobileNumbel]
         || [regextestcm evaluateWithObject:mobileNumbel]
         || [regextestct evaluateWithObject:mobileNumbel]
         || [regextestcu evaluateWithObject:mobileNumbel])) {
        return YES;
    }
    
    return NO;
}

+(BOOL) checkCardNo:(NSString*) cardNo{
    int oddsum = 0;     //奇数求和
    int evensum = 0;    //偶数求和
    int allsum = 0;
    int cardNoLength = (int)[cardNo length];
    int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];
    
    cardNo = [cardNo substringToIndex:cardNoLength - 1];
    for (int i = cardNoLength -1 ; i>=1;i--) {
        NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];
        int tmpVal = [tmpString intValue];
        if (cardNoLength % 2 ==1 ) {
            if((i % 2) == 0){
                tmpVal *= 2;
                if(tmpVal>=10)
                    tmpVal -= 9;
                evensum += tmpVal;
            }else{
                oddsum += tmpVal;
            }
        }else{
            if((i % 2) == 1){
                tmpVal *= 2;
                if(tmpVal>=10)
                    tmpVal -= 9;
                evensum += tmpVal;
            }else{
                oddsum += tmpVal;
            }
        }
    }
    
    allsum = oddsum + evensum;
    allsum += lastNum;
    if((allsum % 10) == 0)
        return YES;
    else
        return NO;
}

+(NSString *)timeStrWithDurations:(float)length
{
    int seconds = (int)(length + 0.5);
    
    if (seconds < 60)
    {
        int second = seconds;
        return [NSString stringWithFormat:@"00:%02zd",second];
    }
    else if(seconds <3600)
    {
        int minute = seconds / 60;
        int second = (int)seconds % 60;
        return [NSString stringWithFormat:@"%02zd:%02zd",minute,second];
    }
    else
    {
        int hour = seconds / 3600;
        int minute = ((int)seconds % 3600) / 60;
        int second = (int)seconds % 60;
        return [NSString stringWithFormat:@"%02zd:%02zd:%02zd",hour,minute,second];
    }
}

+(NSString *)timeHourStrWithDurations:(float)length
{
    int seconds = (int)(length + 0.5);
    
    if (seconds < 60)
    {
        int second = seconds;
        return [NSString stringWithFormat:@"00:00:%02zd",second];
    }
    else if(seconds <3600)
    {
        int minute = seconds / 60;
        int second = (int)seconds % 60;
        return [NSString stringWithFormat:@"00:%02zd:%02zd",minute,second];
    }
    else
    {
        int hour = seconds / 3600;
        int minute = ((int)seconds % 3600) / 60;
        int second = (int)seconds % 60;
        return [NSString stringWithFormat:@"%02zd:%02zd:%02zd",hour,minute,second];
    }
}

- (NSString *)subStringFrom:(NSString *)startString to:(NSString *)endString
{
    NSRange startRange = [self rangeOfString:startString];
    NSRange endRange = [self rangeOfString:endString];
    NSRange range = NSMakeRange(startRange.location + startRange.length, endRange.location - startRange.location - startRange.length);
    return [self substringWithRange:range];
}

@end
